const app = getApp()
var http = require("../../utils/http.js");
var config = require("../../utils/config.js");
var crypto = require("../../utils/crypto.js");

Page({
  data: {
    // 登录注册页面相关数据
    isRegister: false, // 是否是注册模式
    showWechatLogin: true, // 默认显示微信登录方式（仅登录模式）
    phone: '', // 手机号
    password: '', // 密码
    confirmPassword: '', // 确认密码
    focusedInput: '', // 当前聚焦的输入框
    phoneNumber: '', // 微信授权后的手机号
  },

  onLoad: function (options) {
    // 检查是否已登录
    var token = wx.getStorageSync('token')
    if (token) {
      wx.switchTab({ url: '/pages/index/index' })
    }

    // 检查是否是注册模式
    if (options && options.isRegister == '1') {
      this.setData({
        isRegister: true,
        showWechatLogin: false
      })
    }
  },

  // 切换登录/注册模式
  switchMode: function () {
    this.setData({
      isRegister: !this.data.isRegister,
      phone: '',
      password: '',
      confirmPassword: '',
      focusedInput: '',
      showWechatLogin: !this.data.isRegister // 登录模式显示微信登录，注册模式不显示
    })
  },

  // 切换到密码登录
  switchToPasswordLogin: function () {
    this.setData({
      showWechatLogin: false
    })
  },

  // 切换到微信登录
  switchToWechatLogin: function () {
    this.setData({
      showWechatLogin: true,
      phone: '',
      password: '',
      focusedInput: ''
    })
  },

  // 输入框聚焦事件
  onInputFocus: function (e) {
    const field = e.currentTarget.dataset.field
    this.setData({
      focusedInput: field
    })
  },

  // 输入框失焦事件
  onInputBlur: function () {
    this.setData({
      focusedInput: ''
    })
  },

  // 手机号输入
  onPhoneInput: function (e) {
    this.setData({
      phone: e.detail.value
    })
  },

  // 密码输入
  onPasswordInput: function (e) {
    this.setData({
      password: e.detail.value
    })
  },

  // 确认密码输入
  onConfirmPasswordInput: function (e) {
    this.setData({
      confirmPassword: e.detail.value
    })
  },

  // 直接使用微信code登录
  wechatCodeLogin() {
    wx.showLoading({
      title: '登录中...',
    });
    this.getWxLoginCode().then(code => {
      this.loginWithCode(code);
    }).catch(err => {
      console.error('登录失败:', err);
      wx.hideLoading();
      wx.showToast({
        title: '登录失败，请重试',
        icon: 'none'
      });
    });
  },

  // 获取微信用户的code并进行登录
  getWxLoginCode() {
    return new Promise((resolve, reject) => {
      wx.login({
        success: (res) => {
          console.log('获取登录凭证（code）:', res);
          if (res.code) {
            resolve(res.code);
          } else {
            reject(new Error('获取code失败'));
          }
        },
        fail: (err) => {
          reject(err);
        }
      });
    });
  },


  // 用code登录
  loginWithCode(code) {
    const params = {
      url: `/user/wxLogin?code=${code}`,
      method: 'POST',
      data: {
        code: code
      },
      callBack: res => {
        console.log('用code登录:', res);
        wx.setStorageSync('token', res.accessToken)
        wx.setStorageSync('refreshToken', res.refreshToken)
        wx.showToast({ title: '登录成功', icon: 'success' })
        setTimeout(function () {
          wx.switchTab({ url: '/pages/index/index' })
        }, 1500)
        console.log('用code登录:', res);
      }
    }

    http.request(params);
  },

  // 登录/注册按钮点击事件
  handleLoginOrRegister: function () {
    var that = this
    var phone = that.data.phone
    var password = that.data.password
    var confirmPassword = that.data.confirmPassword

    // 校验输入
    if (!phone) {
      wx.showToast({ title: '请输入手机号', icon: 'none' })
      return
    }
    if (!password) {
      wx.showToast({ title: that.data.isRegister ? '请设置密码' : '请输入密码', icon: 'none' })
      return
    }
    if (password.length < 6) {
      wx.showToast({ title: '密码长度不能少于6位', icon: 'none' })
      return
    }

    // 注册模式需要验证确认密码
    if (that.data.isRegister) {
      if (!confirmPassword) {
        wx.showToast({ title: '请确认密码', icon: 'none' })
        return
      }
      if (password !== confirmPassword) {
        wx.showToast({ title: '两次输入的密码不一致', icon: 'none' })
        return
      }
    }

    var url = that.data.isRegister ? '/user/register' : '/login'
    var data = {
      userName: phone, // 使用手机号作为用户名
      passWord: crypto.encrypt(password),
    }

    const params = {
      url: url,
      method: "POST",
      data: data,
      callBack: (res) => {
        if (that.data.isRegister) {
          wx.showToast({ title: '注册成功', icon: 'success' })
          // 注册成功后切换到登录模式
          setTimeout(function () {
            that.switchMode()
          }, 1500)
        } else {
          wx.setStorageSync('token', res.accessToken)
          wx.setStorageSync('refreshToken', res.refreshToken)
          wx.showToast({ title: '登录成功', icon: 'success' })
          setTimeout(function () {
            wx.switchTab({ url: '/pages/index/index' })
          }, 1500)
        }
      }
    }
    http.request(params)
  },

  // 去注册页面（保留原逻辑，通过 switchMode 切换）
  goToRegister: function () {
    this.switchMode()
  },

  // 回到首页
  goBack: function () {
    wx.switchTab({ url: '/pages/index/index' })
  }
})
